home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / jovept1.arc / CHANGES.DOC < prev    next >
Text File  |  1985-05-30  |  7KB  |  147 lines

  1.                         JOVE/MS-DOS Changes.
  2.  
  3.                           K. Mitchum 4/85
  4.  
  5. The following is a brief list of the changes made in converting Jove
  6. from Unix to MS-DOS. This is not a detailed list of exact code changes:
  7. as will become clear, enough code was changed and moved so that a simple
  8. "diff" of sources is ridiculous. Instead, this should serve as a guide
  9. in case you are curious, want to change something, or have other code
  10. you would like to move to MS-DOS.
  11.  
  12. Some of the changes to Jove are certainly "kludges", as will be apparant.
  13. Since I did not write Jove, and had little time to decipher all that was
  14. going on in the code, my aim was not elegance in transcription, or efficiency,
  15. but in GETTING THE CODE TO WORK. By definition, this means that many of the
  16. changes are simply forced kludges, and that there are places in the code
  17. that may appear poorly written, redundant, or unnecessary. This is
  18. particularly true in the terminal/screen output code, which is certainly
  19. in need of some optimization. While I had meant to spend some time
  20. "cleaning up" the code and redoing things, my schedule does not permit
  21. this at present.
  22.  
  23. The changes to Jove were all done in cross-development. Code was changed
  24. on a Berkeley 4.2 system, and tested, then moved to a MS-DOS system and
  25. tested. Any changes necessary were then ported back to the Unix machine
  26. and retested. While this "ping-pong" development took some extra time,
  27. it helped in the discovery of the ways in which things on the two
  28. systems differ, and in making the code more portable.
  29.  
  30. Two types of changes have been made to the sources: cosmetic changes and
  31. functional changes. Cosmetic changes are changes in the WAY something is
  32. written, i.e. to please a particular compiler or link. For example,
  33. localizing and moving variable declarations to avoid to satisfy the C86
  34. compiler's idea of "extern". Functional changes are changes to the code,
  35. such as substituting a dedicated terminal/screen driver for the termcap
  36. driver in the original Jove, or changing the behavior of "next-screen"
  37. to look more like emacs. 
  38.  
  39. 1) Extensive changes were made to "jove.h" to organize declarations more
  40. sensibly and to localize variable declarations to avoid duplicate
  41. declaration messages from the MS-DOS compiler. This was necessary
  42. because of the notion of "extern" maintained by C86. In addition, some
  43. additional .h files were created, such as "funcs.h".
  44.  
  45. 2) In the original Jove, terminal i/o was via termcap calls, and was
  46. spread throughout the code. Because with MS-DOS a dedicated screen
  47. driver is needed, all the terminal i/o was relocated and localized, with
  48. provision for a dedicated driver which is modular to one file. Hence,
  49. when moving the code from Unix to MS-DOS, changing the dedicated driver
  50. is quite simple.
  51.  
  52. 3) All functions with significant degrees of o.s. dependence were moved
  53. to the end of each source file, while code which is identical between
  54. systems, or has a one or two line change, is kept at the beginning of
  55. each source file.
  56.  
  57. 4) Everything in "format.c" using the variable argument function
  58. _doprnt(), which is in assembly language on a Unix system, were changed
  59. to usage of a similar function in the C86 library.
  60.  
  61. 5) All character i/o was rewritten using simple bdos() calls in an
  62. attempt to duplicate "raw" i/o action under Unix.
  63.  
  64. 6) Sections of code requiring child processes were ifdeffed out. While
  65. it may be possible, particularly with newer versions of MS-DOS, to
  66. create a "shell" and run it's output to a window, most of the other Jove
  67. functions requiring processes were deemed too complicated to emulate
  68. under MS-DOS. Some of these may be emulated in the future, such as
  69. running the compiler or "make" in a window, however, the single-process
  70. nature of the o.s. makes this seem of dubious value.
  71.  
  72. 7) All calls to signal() were ifdeffed.
  73.  
  74. 8) An emulation of the Unix stat() call was provided to kludge an
  75. inode number for each file.
  76.  
  77. 9) A dedicated driver was substituted under Unix for the termcap
  78. version, using both h19 and ann arbor ambassador terminals. A driver was
  79. then written for MS-DOS along similar lines, using direct screen
  80. management as a memory array, independent of the operating system.
  81.  
  82. 10) An exhaustive search for all cases of innappropriate type
  83. conversions was made. This was necessary because of the different sizes
  84. of ints (16 bits) and pointers (32 bits) on the 8088. This took some
  85. time, but cleared up some interesting errors.
  86.  
  87. 11) Some problems with overflowing using strncpy(), which were not a
  88. problem on the Unix machine were found and a local version was written.
  89.  
  90. 12) Key bindings were changed to more closely match those of our version
  91. of emacs.
  92.  
  93. 13) The behavior of some routines, such as "next-page", "prev-page",
  94. etc. was changed to more closely approximate emacs.
  95.  
  96. 14) Changes were made in "c-mode" to more closely resemble electic-c
  97. mode under emacs. Brace and bracket matching were added, with warnings
  98. when the matches are not in the current window.
  99.  
  100. 15) Some of the optimizing routines in the screen handler were made
  101. operating system dependent. Significant degrees of simplication can
  102. still be made, however, since with a memory image of the screen there is
  103. no need for optimization at all.
  104.  
  105. 16) Some minor changes were made to match across cases since all file
  106. names under MS-DOS are returned in upper case.
  107.  
  108. TO DO:
  109.  
  110. 1) There is a bug in the screen display that crops up occassionally when
  111. doing single character deletes. The problem is one of display, since a
  112. "redraw" will draw the screen correctly. I hope to look into this soon.
  113.  
  114. 2) Because the screen redraw algorithm doesn't know about screen
  115. highlighting, when the same character at the same position on the screen
  116. needs to be redone using a different highlight, it is not done. This is
  117. only apparant when deleting windows from the screen, when a character
  118. that was on the mode line (in highlight) should be redrawn without
  119. highlight.
  120.  
  121. 3) VERY RARELY, a fast typist can string together a string of control
  122. characters including a control C, particularly ^X-^S-^C, that will be
  123. intercepted by the operating system, aborting the program and ERASING
  124. a file. Because this has happened only twice in 6 months of continuous
  125. use of Jove on 4 different systems, it is hard to find the fix. However,
  126. be warned: type control sequences distinctly at a reasonable speed.
  127.  
  128. 4) When using a large number of files, buffers, and making many changes
  129. at one session an occassional "free node in list" error may pop up.
  130. This has happened rarely, and the cause in unclear. If you cure this
  131. one, let me know. Your files are not munged when this happens.
  132.  
  133. 5) There is no backup file facility ala emacs, or checkpointing. I hope
  134. to add this soon.
  135.  
  136. 6) When you invoke Jove and specify a filename, i.e. "jove foobar.c", or
  137. are within jove and do a "visit-file" or the like, the mode gets set
  138. correctly. However, if you are already in a buffer and read in a new
  139. file, the mode does not get reset automatically. Again I intend to look
  140. at this someday.
  141.  
  142. 7) A tags package needs to be implemented and tested. The code is there.
  143.  
  144.  
  145.  
  146.  
  147.